/**
 * 学习目标：使用受控组件-常用的受控组件
 * 步骤：
 * 1. 使用state声明数据，并且把数据帮给表单元素的value 或者 checked 属性
 * 2. 给表单元素绑定onChange事件，通过setState来修改state中的数据
 *
 * 注意：
 * 1. 原生JS中html是oninput时就触发，onchange代表失去焦点时触发
 * 2. React中onChange代表立即触发，onBlur代表失去焦点时触发
 * 3. React中推荐使用onChange
 * input select textarea 都是绑定到value标签属性上
 * checkbox是和checked标签属性绑定在一起
 */
import React from 'react';
import ReactDOM from 'react-dom';

class App extends React.Component {
  state = {
    username: 'zs',
    desc: '法外狂徒',
    city: '2',
    isSingle: false,
  };

  handleName = (e) => {
    console.log(e.target.value);
    this.setState({ username: e.target.value });
  };

  handleDesc = (e) => {
    this.setState({ desc: e.target.value });
  };

  handleCity = (e) => {
    this.setState({ city: e.target.value });
  };

  handleSingle = (e) => {
    this.setState({ isSingle: e.target.checked });
  };

  render() {
    return (
      <div>
        姓名：
        <input type="text" value={this.state.username} onChange={this.handleName} />
        <br />
        描述：<textarea value={this.state.desc} onChange={this.handleDesc}></textarea>
        <br />
        城市：
        <select value={this.state.city} onChange={this.handleCity}>
          <option value="1">北京</option>
          <option value="2">上海</option>
          <option value="3">广州</option>
          <option value="4">深圳</option>
        </select>
        <br />
        是否单身：
        <input type="checkbox" checked={this.state.isSingle} onChange={this.handleSingle} />
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById('root'));
